#include "PV2D.h"


//Constructoras y Destructoras
PV2D::PV2D(void)
{
	x = 0.0;
	y = 0.0;
}

PV2D::PV2D(GLdouble x, GLdouble y)
{
	this->x = x;
	this->y = y;
}

PV2D::PV2D(const PV2D &p)
{
	this->x = p.x;
	this->y = p.y;
}

PV2D::~PV2D(void)
{
}


//Getters y Setters
void PV2D::setX(GLdouble x)
{
	this->x = x;
}

void PV2D::setY(GLdouble y)
{
	this->y = y;
}

GLdouble PV2D::getX()
{
	return x;
}

GLdouble PV2D::getY()
{
	return y;
}


//Clone y Operadores
PV2D* PV2D::clone()
{
	PV2D* p = new PV2D(x, y);
	return p;
}

float PV2D::angle()
{
	return atan2((double)y,(double)x);
}

PV2D* PV2D::operator +(const PV2D &p)
{
	return new PV2D(this->x+p.x,this->y+p.y);
}

PV2D* PV2D::operator -(const PV2D &p)
{
	return new PV2D(this->x-p.x,this->y-p.y);
}

PV2D* PV2D::operator *(GLdouble d)
{
	return new PV2D(this->x*d,this->y*d);
}

double PV2D::length()
{
	return sqrt(x * x + y * y);
}
